package com.ims.core.doc.domain;

import java.math.BigDecimal;
import java.util.List;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ims.common.annotation.Excel;
import com.ims.common.annotation.RequestName;
import com.ims.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 结算单对象 t_sc_settlebill
 *
 * @author IMS
 * @date 2024-12-02
 */
public class TScSettlebill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 结算单ID */
    @Excel(name = "结算单ID")
    private String settleId;


    /** 公司代码 */
    @Excel(name = "公司代码")
    private String custId;

    /** 客户公司代码 */
    private String siteCode;

    /** 客户公司 */
    @Excel(name = "客户公司")
    private String siteName;

    /** 发货日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deliveryTime;

    /** 结算时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settleTime;

    /** 到期日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到期日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dueDate;

    /** 账单条款代码 */
    private String termsCode;

    /** 账单条款 */
    @Excel(name = "账单条款")
    private String termsCodeName;

    /** 订单ID */
    private String orderId;

    /** ERP发票号 */
    @Excel(name = "ERP发票号")
    @RequestName(name = "ERP发票号")
    private String orderNo;

    /** 源结算单ID */
    private String sourceSettleId;

    /** 源订单ID */
    private String sourceOrderId;

    /** ERP应用于发票号 */
    @Excel(name = "ERP应用于发票号")
    private String sourceOrderNo;

    /** 发票类型代码 */
    private String invoiceType;

    /** 发票类型 */
    @Excel(name = "发票类型")
    private String invoiceTypeName;

    /** 金额(不含税) */
    @Excel(name = "金额(不含税)")
    private BigDecimal feeWithoutTax;

    /** 金额(含税) */
    @Excel(name = "金额(含税)")
    private BigDecimal fee;

    /** 税额 */
    @Excel(name = "税额")
    private BigDecimal tax;

    /** 待销金额(不含税) */
    @Excel(name = "待销金额(不含税)")
    private BigDecimal pendingFeeWithoutTax;

    /** 待销金额(含税) */
    @Excel(name = "待销金额(含税)")
    private BigDecimal pendingFee;

    /** 运费 */
    @Excel(name = "运费")
    private BigDecimal freightFee;

    /** 杂费 */
    @Excel(name = "杂费")
    private BigDecimal miscChargesFee;

    /** 总金额 */
    @Excel(name = "总金额")
    private BigDecimal amount;

    /** 含税标识代码 */
    private Integer isTax;

    /** 含税标识 */
    @Excel(name = "含税标识")
    private String isTaxName;

    /** 币别代码 */
    private String currencyCode;

    /** 币别 */
    @Excel(name = "币别")
    private String currencyName;

    /** 汇率 */
    @Excel(name = "汇率")
    private BigDecimal exchRate;

    /** 税日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "税日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date taxDate;

    /** 从订单过账代码 */
    private String postFromCo;

    /** 从订单过账 */
    @Excel(name = "从订单过账")
    private String postFromCoName;

    /** 单据状态 */
    private Integer settlebillStatus;

    /** 单据状态 */
    @Excel(name = "单据状态")
    private String settlebillStatusName;

    /** 单据性质代码 */
    private String natureType;

    /** 单据性质 */
    @Excel(name = "单据性质")
    private String natureTypeName;

    /** 特定业务代码 */
    private Integer businessType;

    /** 特定业务 */
    @Excel(name = "特定业务")
    private String businessTypeName;

    /** 征收类型代码 */
    private Integer collectionType;

    /** 征收类型 */
    @Excel(name = "征收类型")
    private String collectionTypeName;

    /** 特殊开票 */
    @Excel(name = "特殊开票")
    private String specialInvoice;

    /** 购方名称 */
    @Excel(name = "购方名称")
    @RequestName(name = "购方名称")
    private String buyerName;

    /** 购方编码 */
    @Excel(name = "购方编码")
    @RequestName(name = "购方编码")
    private String buyerCode;

    /** 购方纳税识别号 */
    @Excel(name = "购方纳税识别号")
    private String buyerNumber;

    /** 购方地址 */
    @Excel(name = "购方地址")
    private String buyerAddress;

    /** 购方电话 */
    @Excel(name = "购方电话")
    private String buyerTel;

    /** 购方开户行 */
    @Excel(name = "购方开户行")
    private String buyerBank;

    /** 购方账号 */
    @Excel(name = "购方账号")
    private String buyerAccount;

    /** 购方凭证号 */
    @Excel(name = "购方凭证号")
    private String voucherNumber;

    /** 开票人 */
    @Excel(name = "开票人")
    private String invoiceName;

    /** 收款人 */
    @Excel(name = "收款人")
    private String collectName;

    /** 复核人 */
    @Excel(name = "复核人")
    private String reviewName;

    /** 收票人邮箱 */
    @Excel(name = "收票人邮箱")
    private String collectMail;

    /** 收票人手机号 */
    @Excel(name = "收票人手机号")
    private String collectMobile;

    /** 销方名称 */
    @Excel(name = "销方名称")
    private String sellerName;

    /** 销方纳税识别号 */
    @Excel(name = "销方纳税识别号")
    private String sellerNumber;

    /** 销方地址 */
    @Excel(name = "销方地址")
    private String sellerAddress;

    /** 销方电话 */
    @Excel(name = "销方电话")
    private String sellerTel;

    /** 销方开户行 */
    @Excel(name = "销方开户行")
    private String sellerBank;

    /** 销方账号 */
    @Excel(name = "销方账号")
    private String sellerAccount;

    /** 合并标识 */
    private Long mergeIdent;

    /** 合并标识 */
    @Excel(name = "合并标识")
    private String mergeIdentName;

    /** 拆分状态 */
    private Integer splitStatus;

    /** 拆分状态 */
    @Excel(name = "拆分状态")
    private String splitStatusName;

    /** 开票网点 */
    @Excel(name = "开票网点")
    private String invoiceBranchName;

    /** 站点 */
    @Excel(name = "站点")
    private String branchName;

    /** ERP发票流水号 */
    @Excel(name = "ERP发票流水号")
    private String erpSerialNumber;

    /** 业务类型 */
    private String type;

    /** 回写状态代码 */
    @Excel(name = "回写状态代码")
    private String returnErpStatus;

    /** 回写状态 */
    @Excel(name = "回写状态")
    private String returnErpStatusName;

    /** 回写时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回写时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date returnErpTime;

    /** 回写描述 */
    @Excel(name = "回写描述")
    private String returnErpDescription;

    /** 错误描述 */
    @Excel(name = "错误描述")
    private String errorMsg;

    /** (原篮字)发票ID */
    private String originalInvoiceId;

    /** (原篮字)发票号码 */
    @Excel(name = "(原篮字)发票号码")
    private String originalInvoiceNo;

    /** 结算单明细项信息 */
    private List<TScSettlebillEntry> tScSettlebillEntryList;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setSettleId(String settleId)
    {
        this.settleId = settleId;
    }

    public String getSettleId()
    {
        return settleId;
    }
    public void setCustId(String custId)
    {
        this.custId = custId;
    }

    public String getCustId()
    {
        return custId;
    }
    public void setSiteCode(String siteCode)
    {
        this.siteCode = siteCode;
    }

    public String getSiteCode()
    {
        return siteCode;
    }
    public void setSiteName(String siteName)
    {
        this.siteName = siteName;
    }

    public String getSiteName()
    {
        return siteName;
    }
    public void setDeliveryTime(Date deliveryTime)
    {
        this.deliveryTime = deliveryTime;
    }

    public Date getDeliveryTime()
    {
        return deliveryTime;
    }
    public void setSettleTime(Date settleTime)
    {
        this.settleTime = settleTime;
    }

    public Date getSettleTime()
    {
        return settleTime;
    }
    public void setDueDate(Date dueDate)
    {
        this.dueDate = dueDate;
    }

    public Date getDueDate()
    {
        return dueDate;
    }
    public void setTermsCode(String termsCode)
    {
        this.termsCode = termsCode;
    }

    public String getTermsCode()
    {
        return termsCode;
    }
    public void setTermsCodeName(String termsCodeName)
    {
        this.termsCodeName = termsCodeName;
    }

    public String getTermsCodeName()
    {
        return termsCodeName;
    }
    public void setOrderId(String orderId)
    {
        this.orderId = orderId;
    }

    public String getOrderId()
    {
        return orderId;
    }
    public void setOrderNo(String orderNo)
    {
        this.orderNo = orderNo;
    }

    public String getOrderNo()
    {
        return orderNo;
    }
    public void setSourceSettleId(String sourceSettleId)
    {
        this.sourceSettleId = sourceSettleId;
    }

    public String getSourceSettleId()
    {
        return sourceSettleId;
    }
    public void setSourceOrderId(String sourceOrderId)
    {
        this.sourceOrderId = sourceOrderId;
    }

    public String getSourceOrderId()
    {
        return sourceOrderId;
    }
    public void setSourceOrderNo(String sourceOrderNo)
    {
        this.sourceOrderNo = sourceOrderNo;
    }

    public String getSourceOrderNo()
    {
        return sourceOrderNo;
    }
    public void setInvoiceType(String invoiceType)
    {
        this.invoiceType = invoiceType;
    }

    public String getInvoiceType()
    {
        return invoiceType;
    }
    public void setInvoiceTypeName(String invoiceTypeName)
    {
        this.invoiceTypeName = invoiceTypeName;
    }

    public String getInvoiceTypeName()
    {
        return invoiceTypeName;
    }
    public void setFeeWithoutTax(BigDecimal feeWithoutTax)
    {
        this.feeWithoutTax = feeWithoutTax;
    }

    public BigDecimal getFeeWithoutTax()
    {
        return feeWithoutTax;
    }
    public void setFee(BigDecimal fee)
    {
        this.fee = fee;
    }

    public BigDecimal getFee()
    {
        return fee;
    }
    public void setTax(BigDecimal tax)
    {
        this.tax = tax;
    }

    public BigDecimal getTax()
    {
        return tax;
    }
    public void setPendingFeeWithoutTax(BigDecimal pendingFeeWithoutTax)
    {
        this.pendingFeeWithoutTax = pendingFeeWithoutTax;
    }

    public BigDecimal getPendingFeeWithoutTax()
    {
        return pendingFeeWithoutTax;
    }
    public void setPendingFee(BigDecimal pendingFee)
    {
        this.pendingFee = pendingFee;
    }

    public BigDecimal getPendingFee()
    {
        return pendingFee;
    }
    public void setFreightFee(BigDecimal freightFee)
    {
        this.freightFee = freightFee;
    }

    public BigDecimal getFreightFee()
    {
        return freightFee;
    }
    public void setMiscChargesFee(BigDecimal miscChargesFee)
    {
        this.miscChargesFee = miscChargesFee;
    }

    public BigDecimal getMiscChargesFee()
    {
        return miscChargesFee;
    }
    public void setAmount(BigDecimal Amount)
    {
        this.amount = Amount;
    }

    public BigDecimal getAmount()
    {
        return amount;
    }
    public void setIsTax(Integer isTax)
    {
        this.isTax = isTax;
    }

    public Integer getIsTax()
    {
        return isTax;
    }
    public void setIsTaxName(String isTaxName)
    {
        this.isTaxName = isTaxName;
    }

    public String getIsTaxName()
    {
        return isTaxName;
    }
    public void setCurrencyCode(String currencyCode)
    {
        this.currencyCode = currencyCode;
    }

    public String getCurrencyCode()
    {
        return currencyCode;
    }
    public void setCurrencyName(String currencyName)
    {
        this.currencyName = currencyName;
    }

    public String getCurrencyName()
    {
        return currencyName;
    }
    public void setExchRate(BigDecimal exchRate)
    {
        this.exchRate = exchRate;
    }

    public BigDecimal getExchRate()
    {
        return exchRate;
    }
    public void setTaxDate(Date taxDate)
    {
        this.taxDate = taxDate;
    }

    public Date getTaxDate()
    {
        return taxDate;
    }
    public void setPostFromCo(String postFromCo)
    {
        this.postFromCo = postFromCo;
    }

    public String getPostFromCo()
    {
        return postFromCo;
    }
    public void setPostFromCoName(String postFromCoName)
    {
        this.postFromCoName = postFromCoName;
    }

    public String getPostFromCoName()
    {
        return postFromCoName;
    }
    public void setSettlebillStatus(Integer settlebillStatus)
    {
        this.settlebillStatus = settlebillStatus;
    }

    public Integer getSettlebillStatus()
    {
        return settlebillStatus;
    }
    public void setSettlebillStatusName(String settlebillStatusName)
    {
        this.settlebillStatusName = settlebillStatusName;
    }

    public String getSettlebillStatusName()
    {
        return settlebillStatusName;
    }
    public void setNatureType(String natureType)
    {
        this.natureType = natureType;
    }

    public String getNatureType()
    {
        return natureType;
    }
    public void setNatureTypeName(String natureTypeName)
    {
        this.natureTypeName = natureTypeName;
    }

    public String getNatureTypeName()
    {
        return natureTypeName;
    }
    public void setBusinessType(Integer businessType)
    {
        this.businessType = businessType;
    }

    public Integer getBusinessType()
    {
        return businessType;
    }
    public void setBusinessTypeName(String businessTypeName)
    {
        this.businessTypeName = businessTypeName;
    }

    public String getBusinessTypeName()
    {
        return businessTypeName;
    }
    public void setCollectionType(Integer collectionType)
    {
        this.collectionType = collectionType;
    }

    public Integer getCollectionType()
    {
        return collectionType;
    }
    public void setCollectionTypeName(String collectionTypeName)
    {
        this.collectionTypeName = collectionTypeName;
    }

    public String getCollectionTypeName()
    {
        return collectionTypeName;
    }
    public void setSpecialInvoice(String specialInvoice)
    {
        this.specialInvoice = specialInvoice;
    }

    public String getSpecialInvoice()
    {
        return specialInvoice;
    }

    public String getBuyerCode() {
        return buyerCode;
    }

    public void setBuyerCode(String buyerCode) {
        this.buyerCode = buyerCode;
    }

    public void setBuyerName(String buyerName)
    {
        this.buyerName = buyerName;
    }

    public String getBuyerName()
    {
        return buyerName;
    }
    public void setBuyerNumber(String buyerNumber)
    {
        this.buyerNumber = buyerNumber;
    }

    public String getBuyerNumber()
    {
        return buyerNumber;
    }
    public void setBuyerAddress(String buyerAddress)
    {
        this.buyerAddress = buyerAddress;
    }

    public String getBuyerAddress()
    {
        return buyerAddress;
    }
    public void setBuyerTel(String buyerTel)
    {
        this.buyerTel = buyerTel;
    }

    public String getBuyerTel()
    {
        return buyerTel;
    }
    public void setBuyerBank(String buyerBank)
    {
        this.buyerBank = buyerBank;
    }

    public String getBuyerBank()
    {
        return buyerBank;
    }
    public void setBuyerAccount(String buyerAccount)
    {
        this.buyerAccount = buyerAccount;
    }

    public String getBuyerAccount()
    {
        return buyerAccount;
    }
    public void setVoucherNumber(String voucherNumber)
    {
        this.voucherNumber = voucherNumber;
    }

    public String getVoucherNumber()
    {
        return voucherNumber;
    }
    public void setInvoiceName(String invoiceName)
    {
        this.invoiceName = invoiceName;
    }

    public String getInvoiceName()
    {
        return invoiceName;
    }
    public void setCollectName(String collectName)
    {
        this.collectName = collectName;
    }

    public String getCollectName()
    {
        return collectName;
    }
    public void setReviewName(String reviewName)
    {
        this.reviewName = reviewName;
    }

    public String getReviewName()
    {
        return reviewName;
    }
    public void setCollectMail(String collectMail)
    {
        this.collectMail = collectMail;
    }

    public String getCollectMail()
    {
        return collectMail;
    }
    public void setCollectMobile(String collectMobile)
    {
        this.collectMobile = collectMobile;
    }

    public String getCollectMobile()
    {
        return collectMobile;
    }
    public void setSellerName(String sellerName)
    {
        this.sellerName = sellerName;
    }

    public String getSellerName()
    {
        return sellerName;
    }
    public void setSellerNumber(String sellerNumber)
    {
        this.sellerNumber = sellerNumber;
    }

    public String getSellerNumber()
    {
        return sellerNumber;
    }
    public void setSellerAddress(String sellerAddress)
    {
        this.sellerAddress = sellerAddress;
    }

    public String getSellerAddress()
    {
        return sellerAddress;
    }
    public void setSellerTel(String sellerTel)
    {
        this.sellerTel = sellerTel;
    }

    public String getSellerTel()
    {
        return sellerTel;
    }
    public void setSellerBank(String sellerBank)
    {
        this.sellerBank = sellerBank;
    }

    public String getSellerBank()
    {
        return sellerBank;
    }
    public void setSellerAccount(String sellerAccount)
    {
        this.sellerAccount = sellerAccount;
    }

    public String getSellerAccount()
    {
        return sellerAccount;
    }
    public void setMergeIdent(Long mergeIdent)
    {
        this.mergeIdent = mergeIdent;
    }

    public Long getMergeIdent()
    {
        return mergeIdent;
    }
    public void setMergeIdentName(String mergeIdentName)
    {
        this.mergeIdentName = mergeIdentName;
    }

    public String getMergeIdentName()
    {
        return mergeIdentName;
    }
    public void setSplitStatus(Integer splitStatus)
    {
        this.splitStatus = splitStatus;
    }

    public Integer getSplitStatus()
    {
        return splitStatus;
    }
    public void setSplitStatusName(String splitStatusName)
    {
        this.splitStatusName = splitStatusName;
    }

    public String getSplitStatusName()
    {
        return splitStatusName;
    }
    public void setInvoiceBranchName(String invoiceBranchName)
    {
        this.invoiceBranchName = invoiceBranchName;
    }

    public String getInvoiceBranchName()
    {
        return invoiceBranchName;
    }
    public void setBranchName(String branchName)
    {
        this.branchName = branchName;
    }

    public String getBranchName()
    {
        return branchName;
    }
    public void setErpSerialNumber(String erpSerialNumber)
    {
        this.erpSerialNumber = erpSerialNumber;
    }

    public String getErpSerialNumber()
    {
        return erpSerialNumber;
    }

    public List<TScSettlebillEntry> getTScSettlebillEntryList()
    {
        return tScSettlebillEntryList;
    }

    public void setTScSettlebillEntryList(List<TScSettlebillEntry> tScSettlebillEntryList)
    {
        this.tScSettlebillEntryList = tScSettlebillEntryList;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getReturnErpStatus() {
        return returnErpStatus;
    }

    public void setReturnErpStatus(String returnErpStatus) {
        this.returnErpStatus = returnErpStatus;
    }

    public String getReturnErpStatusName() {
        return returnErpStatusName;
    }

    public void setReturnErpStatusName(String returnErpStatusName) {
        this.returnErpStatusName = returnErpStatusName;
    }

    public Date getReturnErpTime() {
        return returnErpTime;
    }

    public void setReturnErpTime(Date returnErpTime) {
        this.returnErpTime = returnErpTime;
    }

    public String getReturnErpDescription() {
        return returnErpDescription;
    }

    public void setReturnErpDescription(String returnErpDescription) {
        this.returnErpDescription = returnErpDescription;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public String getOriginalInvoiceId() {
        return originalInvoiceId;
    }

    public void setOriginalInvoiceId(String originalInvoiceId) {
        this.originalInvoiceId = originalInvoiceId;
    }

    public String getOriginalInvoiceNo() {
        return originalInvoiceNo;
    }

    public void setOriginalInvoiceNo(String originalInvoiceNo) {
        this.originalInvoiceNo = originalInvoiceNo;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("settleId", getSettleId())
                .append("custId", getCustId())
                .append("siteCode", getSiteCode())
                .append("siteName", getSiteName())
                .append("deliveryTime", getDeliveryTime())
                .append("settleTime", getSettleTime())
                .append("dueDate", getDueDate())
                .append("termsCode", getTermsCode())
                .append("termsCodeName", getTermsCodeName())
                .append("orderId", getOrderId())
                .append("orderNo", getOrderNo())
                .append("sourceSettleId", getSourceSettleId())
                .append("sourceOrderId", getSourceOrderId())
                .append("sourceOrderNo", getSourceOrderNo())
                .append("invoiceType", getInvoiceType())
                .append("invoiceTypeName", getInvoiceTypeName())
                .append("feeWithoutTax", getFeeWithoutTax())
                .append("fee", getFee())
                .append("tax", getTax())
                .append("pendingFeeWithoutTax", getPendingFeeWithoutTax())
                .append("pendingFee", getPendingFee())
                .append("freightFee", getFreightFee())
                .append("miscChargesFee", getMiscChargesFee())
                .append("amount", getAmount())
                .append("isTax", getIsTax())
                .append("isTaxName", getIsTaxName())
                .append("currencyCode", getCurrencyCode())
                .append("currencyName", getCurrencyName())
                .append("exchRate", getExchRate())
                .append("taxDate", getTaxDate())
                .append("postFromCo", getPostFromCo())
                .append("postFromCoName", getPostFromCoName())
                .append("settlebillStatus", getSettlebillStatus())
                .append("settlebillStatusName", getSettlebillStatusName())
                .append("natureType", getNatureType())
                .append("natureTypeName", getNatureTypeName())
                .append("businessType", getBusinessType())
                .append("businessTypeName", getBusinessTypeName())
                .append("collectionType", getCollectionType())
                .append("collectionTypeName", getCollectionTypeName())
                .append("specialInvoice", getSpecialInvoice())
                .append("buyerName", getBuyerName())
                .append("buyerNumber", getBuyerNumber())
                .append("buyerAddress", getBuyerAddress())
                .append("buyerTel", getBuyerTel())
                .append("buyerBank", getBuyerBank())
                .append("buyerAccount", getBuyerAccount())
                .append("voucherNumber", getVoucherNumber())
                .append("invoiceName", getInvoiceName())
                .append("collectName", getCollectName())
                .append("reviewName", getReviewName())
                .append("collectMail", getCollectMail())
                .append("collectMobile", getCollectMobile())
                .append("remark", getRemark())
                .append("sellerName", getSellerName())
                .append("sellerNumber", getSellerNumber())
                .append("sellerAddress", getSellerAddress())
                .append("sellerTel", getSellerTel())
                .append("sellerBank", getSellerBank())
                .append("sellerAccount", getSellerAccount())
                .append("mergeIdent", getMergeIdent())
                .append("mergeIdentName", getMergeIdentName())
                .append("splitStatus", getSplitStatus())
                .append("splitStatusName", getSplitStatusName())
                .append("invoiceBranchName", getInvoiceBranchName())
                .append("branchName", getBranchName())
                .append("erpSerialNumber", getErpSerialNumber())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("tScSettlebillEntryList", getTScSettlebillEntryList())
                .toString();
    }
}
